/**
 * JSON 工具类
 */
export class JsonUtil {
  /**
   * 将 JSON 字符串转换为对象
   * @param jsonString JSON 格式的字符串
   * @returns 转换后的对象
   */
  static jsonToObject<T>(jsonString: string): T {
    try {
      return JSON.parse(jsonString) as T;
    } catch (error) {
      console.error('Error parsing JSON string:', error);
      throw error;
    }
  }

  /**
   * 将 JSON 字符串转换为 Map
   * @param jsonString JSON 格式的字符串
   */
  static jsonToMap<K extends string, V>(jsonString: string): Map<K, V> {
    const jsonObject = JSON.parse(jsonString);
    return new Map(Object.entries(jsonObject) as Array<[K, V]>);
  }


  /**
   * 将对象转换为 JSON 字符串
   * @param obj 需要转换的对象
   * @returns JSON 格式的字符串
   */
  static toJsonString(obj: any): string {
    try {
      if (obj instanceof Map) {
        return JSON.stringify(Object.fromEntries(obj));
      }
      return JSON.stringify(obj);
    } catch (error) {
      console.error('Error converting object to JSON string:', error);
      throw error;
    }
  }
}
